<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery.min.js"></script>
</head>

<body>
    <script>
        $(function () {
            /*
               对象拷贝：把 object、object2 拷贝给 target。原来的相同属性给覆盖掉，不同的属性保留。
                  语法结构：$.extend[deep],target,object1,[object2];
                  1.第一个参数：默认 false，或省略，则是浅拷贝：ture：深拷贝
                     浅拷贝：被拷贝对象中复杂数据类型中的地址拷贝给目标对象。本质指向同一个对象。
                     深拷贝：会把数据给目标对象，相同属性覆盖，不同属性添加。拷贝后互相独立。
                  2.第二个参数：接收属性的对象
                  3.第三个参数：目标对象1，所以是属性将会拷贝给 target。
                  4.第四个参数：目标对象2，可省略
            */
            // var targetObj = {
            // };
            // var obj ={
            //     id: 18,
            //     name:'andy'
            // };
            // var obj1 ={
            //     id: 18,
            //     school: '北大 '
            // };
            // 1.把 obj copy 到 targetObj
            // $.extend(targetObj, obj, obj1);
            // console.log(targetObj);
            // console.log(obj);
            // console.log(obj1);

            // 2.会把 targetObj, 原来的相同属性给覆盖掉，不同的属性保留
            // var targetObj ={
            //     id: 0,
            //     address: '郑州'
            // };
            // var obj = {
            //     id: 18,
            //     name: 'andy'
            // };
            // $.extend(targetObj, obj);
            // console.log(targetObj);
            // console.log(obj);


            // 3.浅拷贝：被拷贝对象中复杂数据类型中的地址拷贝给目标对象，
            // 修改目标对象，会影响拷贝对象
            // 因此目标对象的复杂数据类型的地址会被修改
            // 因此目标对象的复杂数据类型的地址会被修改
            // var targetObj = {
            //     id: 0,
            //     address: '郑州'
            // };

            var targetObj = {
                id: 0,
                address: '郑州',
                msg: {
                    sex: '男'
                }
            };
            var obj = {
                id: 18,
                name: 'andy',
                msg: {
                    age: 12
                }
            };
            // $.extend(targetObj, obj);
            // 深拷贝，会把数据给目标对象，相同属性覆盖，不同属性添加。
            // 修改目标对象的属性也互不影响
            $.extend(true, targetObj, obj);
            targetObj.msg.age = 5;
            console.log(targetObj);
            console.log(obj);
        })
    </script>
</body>

</html>